import 'package:enjoy_plus/pages/house/location_list.dart';
import 'package:enjoy_plus/pages/house/house_list.dart';
import 'package:enjoy_plus/pages/login/index.dart';
import 'package:enjoy_plus/pages/notice/index.dart';
import 'package:enjoy_plus/pages/profile/index.dart';
import 'package:enjoy_plus/pages/tab_bar_page.dart';
import 'package:enjoy_plus/utils/Toast.dart';
import 'package:enjoy_plus/utils/token.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    routes: {
      '/': (context) => const TabBarPage(),
      '/detail': (context) => const NoticeDetail(),
      // 测试是否可以访问
      // '/login': (context) => const LoginPage(),
      // '/profile': (context) => ProfilePage(),
    },
    initialRoute: '/',
    // 没有配置的路由页面，切换时，会执行这个回调函数
    onGenerateRoute: (setting) {
      // print(setting.name); 获取跳转的路由名字
      // 人为的根据逻辑代码 返回不同的 路由 实现跳转
      // 获取用户的登录状态 token
      final token = TokenManager().getToken();
      // 没有 token，要访问的页面需要登录-去登录页(提示用户)
      if (token == null) {
        ToastUtil.showError('请先登录');
        return MaterialPageRoute(builder: (context) {
          return const LoginPage();
        });
      }

      // 已登录 去 Profile 页面（目前可以运行，之后可能需要优化）
      // 有一个对应关系 /profile ->profile页面
      // /home-home页面
      if (setting.name == '/profile') {
        // 如果 路由的切换 是经由 onGenerateRoute 实现的话
        // 参数的传递 需要 自己来手动传递
        // 通过  setting.arguments 传递给对应的组件即可
        // print(setting.arguments);
        return MaterialPageRoute(builder: (context) {
          return ProfilePage(info: setting.arguments as Map);
        });
      }
      // 我的房屋
      if (setting.name == '/house_list') {
        return MaterialPageRoute(builder: (context) => const HouseList());
      }
      // 添加房屋
      if (setting.name == '/location_list') {
        return MaterialPageRoute(builder: (context) => const LocationList());
      }

      return null;
    },
  ));
}
